package Util

import (
	"SkillTextJD2/model"
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

func DB() *gorm.DB {
	// 数据库连接配置
	db, err := gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/SkillTestJD1?charset=utf8mb4&parseTime=True")
	if err != nil {
		fmt.Println("数据库连接失败", err)
		panic("数据库连接失败")
	} else {
		fmt.Println("数据库连接成功")
	}

	// 设置连接池
	db.DB().SetMaxIdleConns(10)         // 空闲连接池中的最大连接数
	db.DB().SetMaxOpenConns(100)        // 数据库的最大打开连接数
	db.DB().SetConnMaxLifetime(30 * 60) // 连接可重用的最长时间(秒)

	// 自动迁移所有模型
	autoMigrate(db)

	// 可选：初始化一些测试数据
	// initTestData(db)

	return db
}

// 自动迁移所有数据库表
func autoMigrate(db *gorm.DB) {
	db.AutoMigrate(&model.User{})
	db.AutoMigrate(&model.Attractions{})
	db.AutoMigrate(&model.TourInfo{})
	db.AutoMigrate(&model.FlightInfo{})
	db.AutoMigrate(&model.Scenery{})
	db.AutoMigrate(&model.HotTour{})
	db.AutoMigrate(&model.Information{})
}

// 初始化测试数据
func initTestData(db *gorm.DB) {
	// 用户数据
	db.Create(&model.User{
		Username: "admin",
		Password: "admin123",
		//Email:    "admin@example.com",
		//Phone:    "13800138000",
	})
}
